#Requires AutoHotkey v2.0

; 声明文件路径变量
filePath := "D:\练习图纸\batch-pasting\test\data.txt"

; 声明一个对象，并初始化其属性
myObject := {
    configFile: filePath, ; 配置文件路径
    texts: [],            ; texts 初始化为空数组
    index: 1              ; 初始索引为 1（AutoHotkey 数组从 1 开始）
}

; 读取文件内容并将其存储在 texts 数组中
readFile(myObject.configFile)

readFile(filePath) {
    global myObject
    fileContent := FileRead(filePath)  ; 使用函数风格读取文件内容
    lines := StrSplit(fileContent, "`n") ; 按行分割文件内容

    ; 去除每行的换行符
    for index, line in lines {
        myObject.texts.Push(Trim(line, "`r`n"))
    }
}

; 绑定 Ctrl+V 快捷键来发送 texts 数组中的字符串
^v:: {
    ; 检查 texts 数组是否为空
    if (myObject.texts.Length > 0) {
        ; 发送当前索引对应的文本
        Send(myObject.texts[myObject.index])
        
        ; 将索引递增
        myObject.index++
        
        ; 如果索引超出数组长度，重新设置为 1
        if (myObject.index > myObject.texts.Length) {
            myObject.index := 1
        }
    }
}

; 绑定 Ctrl+Alt+Q 快捷键来退出脚本
^!q::ExitApp
